<?php
include 'helpers.php';
//测试一些复杂的数组函数 array_reduce();array_map(),array_walk(),array_filter()
$arr=[4,2,6,9];
$brr=[10,12,23,11,5];
$n=array_reduce($arr,function($a,$v){
    return $a+$v;
},2);

p($n);


//返回用户自定义函数作用后的数组。回调函数接受的参数数目应该和传递给 array_map() 函数的数组数目一致。
//$v1,$v2,分别是$arr,$brr数组中的元素，
$ar=array_map(function($v1,$v2){
    return $v1+$v2;
},$arr,$brr);
p($ar);

//array_walk()函数对数组中的每个元素应用用户自定义函数。在函数中，数组的键名和键值是参数。
//仅一个参数的时候是传入的键值
//注释：您可以通过把用户自定义函数中的第一个参数指定为引用：&$value，来改变数组元素的值
$arr=[1,2,3,4];
$ar=array_walk($arr,function(&$v){
      $v+=1;
});
p($arr);

//array_filter — 用回调函数过滤数组中的单元  返回过滤后的数组,键名和键值对应关系不变。
//可选的参数 flag，以及常量 ARRAY_FILTER_USE_KEY 和 ARRAY_FILTER_USE_BOTH。
//如果没有设置可选参数flag,回调函数只有一个参数传入的是键值，
//如果设置了可选参数flag=ARRAY_FILTER_USE_KEY,回调函数只有一个参数传入的是数组的键名
//如果设置了可选参数flag=ARRAY_FILTER_USE_BOTH,回调函数有两个参数传入的分别是数组的键值,键名
$arr=[5,2,6,97,23,4];
$ar=array_filter($arr,function($v,$k){
    echo $v.'=='.$k.'|';
      if($v%2==0){
          return true;
      } //返回值为假的时候将删除该元素
}, ARRAY_FILTER_USE_BOTH  );

p($ar);
